# 一、知识点_用户输入补充
# 二、[课程内容]week05:数据结构之列表
# 三、list切片

#补充用户信息：打印(print）
# 字符串转换
#用户输入方法：input
#回顾上节课内容：登录系统（while循环、input输入）
#本节课内容：打印（print）输出的一般方法

# 一、用户输入补充
# 知识点1：字符串拼接 用+让打印的结果更直观

name = input("name:")
age = input("age:")
job = input("job：")
salary = input("salary：")

info = '''---------INFO''' + name + '''----------'''+'''
name:'''+name+'''
age:'''+age+'''
job:'''+job+'''
salary:'''+salary
# （？这一段有什么意义？）

#知识点2：（占位符有顺序！请依次填入内容）
#思考：若位置过多呢？如果是一个HTML页面需要很多数据来占用位置
#对顺序要求过于苛刻容易出错
# 构建列表 形式 [] 其中元素以 "," 隔开
# 列表是有顺序的一组值，顺序都是从 0 开始的

info _02 = '''--------INFO %s--------
name:%s
age:%s
job:%s
salary:%s
'''%(name,name,age,job,salary)  #一定要按顺序，否则内容不匹配
print(info_02)

#知识点3：如果想让输入的数据类型变成int 需要强制转变数据类型
name = input("name: ")
age = int(input("age: "))
job = input("job: ")
salary = int(input("salary: "))

# 二、数据结构之列表
#在 Python 中，通常使用[]运算符或list()函数创建列表。

#1.使用[]创建列表
#列表中的元素可以是相同类型或不同类型，简单数据或组合数据
#举例：list1 = []  空列表
#list2 = [1.25,21.06,0.3,4.7,58.1]  元素为实数
#list3 = ["石油","汽车","建筑","TT"]   元素为字符串
#list4 = ['Alice',18,'Beth',19]   元素为数字和字符串混合

#2.使用list()函数创建列表，一般格式为：列表名 = list(sequence)
# 其中，sequence可以是字符串、元组、集合或range()函数返回结果等迭代对象
#知识点扩展：什么是迭代对象？？？
#可迭代对象:即可以被 for in 遍历的对象
#迭代器：迭代器是一个对象，迭代器只能使用一次，迭代器一定是一个可迭代对象，可迭代对象不一定是一个迭代器，迭代器是一个对象class。

#3.课程笔记
# names = "Mike,Mary,Jan,Jack"
 #构建列表 形式[]其中元素以“，”隔开
 #列表是有顺序的一组值，顺序是从0位置开始的
 squares = [1,4,9,16,25]
 # names_str = "Mike","Mary","Jan","Jack"
 user_data_list =["zhichao","youge","Jan","Jack"]
 password_list= [123456,468732,869454,463278]
 user_age = [23,26,32,24]

 user_date = [["zhicaho",123456,23],["youge",468732,26]]
#复杂的数据结构，嵌套，数据结构复杂

# 三、list切片
#通过指定下标的方式来获得某一个数据元素，或者通过指定下标范围来获得一组序列的元素，这种访问序列的方式叫做切片。
#Python中的有序序列都支持切片，如字符串、元组。

#1.[start:stop:step],step代表切片步长，切片区间为[start,stop],此区间前闭后开
#step>0时，从左往右切片；step<0时，从右往左切片  （支持正向和负向）
#start、stop默认为列表的头和尾，并且根据step的正负进行颠倒；step的默认值为1
#举例：st = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’]
# print(st[2:6:2])
# print(st[6:2:-2])
# print(st[::1])  （？为什么会有两个冒号？）
# print(st[::-1]) # 倒序输出
#print(st[-1])

#输出结果：
#[‘c’, ‘e’]  （a即是0）
#[‘g’, ‘e’]
#[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’]
#[‘g’, ‘f’, ‘e’, ‘d’, ‘c’, ‘b’, ‘a’]
#g

# 2. 特殊情况：可以指定 slice 切片的步长 step
num_list = list(range(10))
print(num_list)
print(num_list[0:7:3])

#3.应用:请取出每一个名字（如取第一个名字）
# print（names_str[0]）
print(user_data_list[0])
print(password_list[0])
print(user_age[0])
print(user_data[0])


 # names = ["Mike","Mary","Jan","Jack"] # 第一个数为0
 #print(name[3])
# 取值 index索引（单个值）  and slice切片（多个或者单个）
#根据思考问题对占位符进行优化
# .format（）是一个字符串的格式化方法、函数 优化 占位符
#优势：1.不需要考虑参数出现的顺序
#        2.多个重复项只需要赋值一次（明确数据输入（如：变量age）和输出）

# info_03 = '''-------INFO{HTML_name}-------  #尖括号也是用来占位的
name::{HTML_name}
age:{HTML_age}
job:{HTML_job}
salary:{HTML_salary}
'''.format(HTML_name=age,HTML_salary=salary,HTML_job=job,HTML_salary=salary）

print(info_0)

